home *** CD-ROM | disk | FTP | other *** search
- /* GObject - GLib Type, Object, Parameter and Signal Library
- * Copyright (C) 2000-2001 Red Hat, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General
- * Public License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
- * Boston, MA 02111-1307, USA.
- */
- #if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION)
- #error "Only <glib-object.h> can be included directly."
- #endif
-
- #ifndef __G_SIGNAL_H__
- #define __G_SIGNAL_H__
-
- #include <gobject/gclosure.h>
- #include <gobject/gvalue.h>
- #include <gobject/gparam.h>
- #include <gobject/gmarshal.h>
-
- G_BEGIN_DECLS
-
- /* --- typedefs --- */
- typedef struct _GSignalQuery GSignalQuery;
- typedef struct _GSignalInvocationHint GSignalInvocationHint;
- typedef GClosureMarshal GSignalCMarshaller;
- typedef gboolean (*GSignalEmissionHook) (GSignalInvocationHint *ihint,
- guint n_param_values,
- const GValue *param_values,
- gpointer data);
- typedef gboolean (*GSignalAccumulator) (GSignalInvocationHint *ihint,
- GValue *return_accu,
- const GValue *handler_return,
- gpointer data);
-
-
- /* --- run, match and connect types --- */
- typedef enum
- {
- G_SIGNAL_RUN_FIRST = 1 << 0,
- G_SIGNAL_RUN_LAST = 1 << 1,
- G_SIGNAL_RUN_CLEANUP = 1 << 2,
- G_SIGNAL_NO_RECURSE = 1 << 3,
- G_SIGNAL_DETAILED = 1 << 4,
- G_SIGNAL_ACTION = 1 << 5,
- G_SIGNAL_NO_HOOKS = 1 << 6
- } GSignalFlags;
- #define G_SIGNAL_FLAGS_MASK 0x7f
- typedef enum
- {
- G_CONNECT_AFTER = 1 << 0,
- G_CONNECT_SWAPPED = 1 << 1
- } GConnectFlags;
- typedef enum
- {
- G_SIGNAL_MATCH_ID = 1 << 0,
- G_SIGNAL_MATCH_DETAIL = 1 << 1,
- G_SIGNAL_MATCH_CLOSURE = 1 << 2,
- G_SIGNAL_MATCH_FUNC = 1 << 3,
- G_SIGNAL_MATCH_DATA = 1 << 4,
- G_SIGNAL_MATCH_UNBLOCKED = 1 << 5
- } GSignalMatchType;
- #define G_SIGNAL_MATCH_MASK 0x3f
- #define G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
-
-
- /* --- signal information --- */
- struct _GSignalInvocationHint
- {
- guint signal_id;
- GQuark detail;
- GSignalFlags run_type;
- };
- struct _GSignalQuery
- {
- guint signal_id;
- const gchar *signal_name;
- GType itype;
- GSignalFlags signal_flags;
- GType return_type; /* mangled with G_SIGNAL_TYPE_STATIC_SCOPE flag */
- guint n_params;
- const GType *param_types; /* mangled with G_SIGNAL_TYPE_STATIC_SCOPE flag */
- };
-
-
- /* --- signals --- */
- guint g_signal_newv (const gchar *signal_name,
- GType itype,
- GSignalFlags signal_flags,
- GClosure *class_closure,
- GSignalAccumulator accumulator,
- gpointer accu_data,
- GSignalCMarshaller c_marshaller,
- GType return_type,
- guint n_params,
- GType *param_types);
- guint g_signal_new_valist (const gchar *signal_name,
- GType itype,
- GSignalFlags signal_flags,
- GClosure *class_closure,
- GSignalAccumulator accumulator,
- gpointer accu_data,
- GSignalCMarshaller c_marshaller,
- GType return_type,
- guint n_params,
- va_list args);
- guint g_signal_new (const gchar *signal_name,
- GType itype,
- GSignalFlags signal_flags,
- guint class_offset,
- GSignalAccumulator accumulator,
- gpointer accu_data,
- GSignalCMarshaller c_marshaller,
- GType return_type,
- guint n_params,
- ...);
- void g_signal_emitv (const GValue *instance_and_params,
- guint signal_id,
- GQuark detail,
- GValue *return_value);
- void g_signal_emit_valist (gpointer instance,
- guint signal_id,
- GQuark detail,
- va_list var_args);
- void g_signal_emit (gpointer instance,
- guint signal_id,
- GQuark detail,
- ...);
- void g_signal_emit_by_name (gpointer instance,
- const gchar *detailed_signal,
- ...);
- guint g_signal_lookup (const gchar *name,
- GType itype);
- G_CONST_RETURN gchar* g_signal_name (guint signal_id);
- void g_signal_query (guint signal_id,
- GSignalQuery *query);
- guint* g_signal_list_ids (GType itype,
- guint *n_ids);
- gboolean g_signal_parse_name (const gchar *detailed_signal,
- GType itype,
- guint *signal_id_p,
- GQuark *detail_p,
- gboolean force_detail_quark);
- GSignalInvocationHint* g_signal_get_invocation_hint (gpointer instance);
-
-
- /* --- signal emissions --- */
- void g_signal_stop_emission (gpointer instance,
- guint signal_id,
- GQuark detail);
- void g_signal_stop_emission_by_name (gpointer instance,
- const gchar *detailed_signal);
- gulong g_signal_add_emission_hook (guint signal_id,
- GQuark detail,
- GSignalEmissionHook hook_func,
- gpointer hook_data,
- GDestroyNotify data_destroy);
- void g_signal_remove_emission_hook (guint signal_id,
- gulong hook_id);
-
-
- /* --- signal handlers --- */
- gboolean g_signal_has_handler_pending (gpointer instance,
- guint signal_id,
- GQuark detail,
- gboolean may_be_blocked);
- gulong g_signal_connect_closure_by_id (gpointer instance,
- guint signal_id,
- GQuark detail,
- GClosure *closure,
- gboolean after);
- gulong g_signal_connect_closure (gpointer instance,
- const gchar *detailed_signal,
- GClosure *closure,
- gboolean after);
- gulong g_signal_connect_data (gpointer instance,
- const gchar *detailed_signal,
- GCallback c_handler,
- gpointer data,
- GClosureNotify destroy_data,
- GConnectFlags connect_flags);
- void g_signal_handler_block (gpointer instance,
- gulong handler_id);
- void g_signal_handler_unblock (gpointer instance,
- gulong handler_id);
- void g_signal_handler_disconnect (gpointer instance,
- gulong handler_id);
- gboolean g_signal_handler_is_connected (gpointer instance,
- gulong handler_id);
- gulong g_signal_handler_find (gpointer instance,
- GSignalMatchType mask,
- guint signal_id,
- GQuark detail,
- GClosure *closure,
- gpointer func,
- gpointer data);
- guint g_signal_handlers_block_matched (gpointer instance,
- GSignalMatchType mask,
- guint signal_id,
- GQuark detail,
- GClosure *closure,
- gpointer func,
- gpointer data);
- guint g_signal_handlers_unblock_matched (gpointer instance,
- GSignalMatchType mask,
- guint signal_id,
- GQuark detail,
- GClosure *closure,
- gpointer func,
- gpointer data);
- guint g_signal_handlers_disconnect_matched (gpointer instance,
- GSignalMatchType mask,
- guint signal_id,
- GQuark detail,
- GClosure *closure,
- gpointer func,
- gpointer data);
-
-
- /* --- chaining for language bindings --- */
- void g_signal_override_class_closure (guint signal_id,
- GType instance_type,
- GClosure *class_closure);
- void g_signal_chain_from_overridden (const GValue *instance_and_params,
- GValue *return_value);
-
-
- /* --- convenience --- */
- #define g_signal_connect(instance, detailed_signal, c_handler, data) \
- g_signal_connect_data ((instance), (detailed_signal), (c_handler), (data), NULL, (GConnectFlags) 0)
- #define g_signal_connect_after(instance, detailed_signal, c_handler, data) \
- g_signal_connect_data ((instance), (detailed_signal), (c_handler), (data), NULL, G_CONNECT_AFTER)
- #define g_signal_connect_swapped(instance, detailed_signal, c_handler, data) \
- g_signal_connect_data ((instance), (detailed_signal), (c_handler), (data), NULL, G_CONNECT_SWAPPED)
- #define g_signal_handlers_disconnect_by_func(instance, func, data) \
- g_signal_handlers_disconnect_matched ((instance), \
- (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), \
- 0, 0, NULL, (func), (data))
- #define g_signal_handlers_block_by_func(instance, func, data) \
- g_signal_handlers_block_matched ((instance), \
- (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), \
- 0, 0, NULL, (func), (data))
- #define g_signal_handlers_unblock_by_func(instance, func, data) \
- g_signal_handlers_unblock_matched ((instance), \
- (GSignalMatchType) (G_SIGNAL_MATCH_FUNC | G_SIGNAL_MATCH_DATA), \
- 0, 0, NULL, (func), (data))
-
-
- gboolean g_signal_accumulator_true_handled (GSignalInvocationHint *ihint,
- GValue *return_accu,
- const GValue *handler_return,
- gpointer dummy);
-
- /*< private >*/
- void g_signal_handlers_destroy (gpointer instance);
- void _g_signals_destroy (GType itype);
-
- G_END_DECLS
-
- #endif /* __G_SIGNAL_H__ */
-